<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        
    </style>
</head>
<body>
    
</body>
<script>
    // 1. 必须遵守js中对象的基本语法：数组，多个数据；对象，键值对；非NaN数值和布尔亦可
    // 2. 如果是键值对语法，所有的键必须添加双引号
    // 3. 不允许出现函数，undefined，NaN
    // 4. 不允许出现没有意义的逗号
    // 5. 一个json数据必须是单引号或反引号字符（因为对象的键使用了双引号）（除数值和布尔数据）

    // json转对象，必须要遵守json的规则

    // var json = "hello";       // 1
    // var json = "{age:'admin'}";       // 2
    // var json = "{'name':'admin'}";       // 2
    // var json = `{"name":"admin",}`;       // 4
    // var json = `{"name":"admin",show:"undefined"}`;       // 2
    // var json = `{"name":"admin","show":undefined}`;       // 3
    // var json = {"name":"admin"};        // 5
    // var json = ["hello"];                // 1
    // var json = "['hello']";              // 5
    // var json = '["hello",]';             // 4
    // var json = '["hello",function(){}]';     // 3
    // var json = '["hello",NaN]';              // 3
    // var json = '["hello",undefined]';        // 3

    // console.log( JSON.parse(json) );

    // 以上都是错误的json
    // 以下都是正确的json

    // var json = `[{
    //     "name":"admin",
    //     "age":18,
    //     "isGoodPeople":true,
    //     "hobby": ["唱歌","跳舞"]
    // }]`;

    // console.log( JSON.parse(json) );


    // =======

    // 对象转json，必须遵守对象的语法

    const obj = {
        name:"admin",
        age:18,
        show:function(){},
        msg:undefined,
        a:NaN,
        b:null,
        c:true,
        d:{},
        e:[],
    }
    console.log( JSON.stringify(obj) );

    
</script>
</html>